<?php
function manejo_imagen($ancho=450,$alto=380,$tn_ancho=150,$tn_alto=110,$marca_agua=1,$ruta='',$archivo_origen='',$archivo_destino='',$formato_salida=1){

	//------------------------------------------------------------------------------------------------------------
	// $ancho = Ancho al que se quiere llevar la imagen
	// $alto  = Altoq al que se quiere llevar la imagen
	// $tn_ancho y $tn_alto = Dimensiones de la miniatura, si es 0(cero) alguno de los valores, no hace miniatura
	// $marca_agua = Si es 1(uno) le agrega la marca de agua que debe estar en $ruta marca_de_agua.png
	// $ruta = Ruta donde se encuentra la imagen Ej: ROOT.'/archivos/'
	// $archivo_origen  = El archivo de entrada, generalmente subido mediante un form
	// $archivo_destino = Nombre de la imagen modificada
	// $formato_salida = 1: Crop 
	//					 2: Ajusta - el lienzo tiene todo el tamaño y la imagen un resize
	//					 3:Recorta - el lienzo tiene el tamaño del resize de la imagen
	//------------------------------------------------------------------------------------------------------------

//	$archivo_origen = 'foto_original.jpg'; //280*600
//	$archivo_origen = 'armas.jpg'; //800*600
//	$archivo_origen = 'b1.jpg'; //800*600
//  $ruta = ROOT."/fer/";
//  $archivo_destino = 'foto_destino.jpg';


    //---------------------- Ajustamos el tamaño de la imagen
    $ruta_imagen = $ruta.$archivo_origen;

    $info_imagen  = getimagesize($ruta_imagen);
    $imagen_ancho = $info_imagen[0];
    $imagen_alto  = $info_imagen[1];
    $imagen_tipo  = $info_imagen['mime'];
	
    switch ( $imagen_tipo ){
		case "image/jpg":
        case "image/jpeg":
			$imagen = imagecreatefromjpeg( $ruta_imagen );
            break;
        case "image/png":
			$imagen = imagecreatefrompng( $ruta_imagen );
            break;
        case "image/gif":
			$imagen = imagecreatefromgif( $ruta_imagen );
            break;
    }

	//---------------------- Ajustamos el tamaño de la imagen

	//Original sizes
	$ow = $imagen_ancho; 
	$oh = $imagen_alto;

	
	
	if($formato_salida==1){
		if($ancho/$ow > $alto/$oh) {
			$nw = $ancho;
			$nh = intval(($oh*$nw)/$ow);
			$px = 0;
			$py = ($alto-$nh)/2;
		} else {
			$nh = $alto;
			$nw = intval(($ow * $nh) / $oh);
			$py = 0;
			$px = ($ancho-$nw) / 2;
		}
		//Crea una nueva imagen con el tamaño solicitado
		$image_p = imagecreatetruecolor($ancho,$alto);
		$blanco = imagecolorallocate($image_p, 255, 255, 255);
		$ok = imagefill($image_p, 0, 0, $blanco);					
					   
		//Copy the image loosing the least space
		imagecopyresampled($image_p, $imagen, $px, $py, 0, 0, $nw, $nh, $ow, $oh);
		//imagecopyresampled($new, $imagen, $px, $py, 0, 0, 150, 110, $ow, $oh);
	
	} elseif($formato_salida==2) {
	
		$lienzo_ancho = $ancho;
		$lienzo_alto  = $alto;

		$ratio_orig = $ow/$oh;	
		if ($ancho/$alto > $ratio_orig) {
		   $ancho = $alto*$ratio_orig;
		} else {
		   $alto = $ancho/$ratio_orig;
		}	
		$image_p = imagecreatetruecolor($ancho, $alto);
		$dest_x = 0;
		$dest_y = 0;
		$blanco = imagecolorallocate($image_p, 255, 255, 255);
		$ok     = imagefill($image_p, 0, 0, $blanco);					
		imagecopyresampled($image_p, $imagen, $dest_x, $dest_y, 0, 0, $ancho, $alto, $ow, $oh);
		
	} elseif($formato_salida==3) {
	
		$lienzo_ancho = $ancho;
		$lienzo_alto  = $alto;

		$ratio_orig = $ow/$oh;	
		if ($ancho/$alto > $ratio_orig) {
		   $ancho = $alto*$ratio_orig;
		} else {
		   $alto = $ancho/$ratio_orig;
		}	
	
		$image_p = imagecreatetruecolor($lienzo_ancho, $lienzo_alto);
		$dest_y = intval(($lienzo_alto-$alto)/2);
		$dest_x = intval(($lienzo_ancho-$ancho)/2);
		$blanco = imagecolorallocate($image_p, 255, 255, 255);
		$ok     = imagefill($image_p, 0, 0, $blanco);					
		imagecopyresampled($image_p, $imagen, $dest_x, $dest_y, 0, 0, $ancho, $alto, $ow, $oh);
		
	}
	$ok = imagejpeg($image_p, $ruta.$archivo_destino, 100);

	//---------------------------------------------------------------------------
	// Lleva Marca de Agua??
	//---------------------------------------------------------------------------
	if($marca_agua==1){
		// Cargar la estampa y la foto para aplicarle la marca de agua
		$estampa = imagecreatefrompng($ruta.'marca_de_agua.png');
		$im = imagecreatefromjpeg($ruta.$archivo_destino);

		// Establecer los márgenes para la estampa y obtener el alto/ancho de la imagen de la estampa
		$margen_dcho = 50;
		$margen_inf  = 50;
		$sx = imagesx($estampa);
		$sy = imagesy($estampa);

		// Copiar la imagen de la estampa sobre nuestra foto usando los índices de márgen y el
		// ancho de la foto para calcular la posición de la estampa. 
		imagecopy($im, $estampa, imagesx($im) - $sx - $margen_dcho, imagesy($im) - $sy - $margen_inf, 0, 0, imagesx($estampa), imagesy($estampa));

		// Imprimir y liberar memoria
		$ok = imagejpeg($im, $ruta.$archivo_destino, 100);
	}

	$imagen_nueva['imagen'] = $archivo_destino;
	
	if($tn_ancho>0 and $tn_alto>0){
		$info_imagen = getimagesize($ruta.$archivo_destino);
		$imagen_ancho = $info_imagen[0];
		$imagen_alto = $info_imagen[1];
		$imagen2 = imagecreatefromjpeg( $ruta.$archivo_destino );
		$image_tn = imagecreatetruecolor($tn_ancho, $tn_alto);					   
		//Copy the image loosing the least space
		imagecopyresampled($image_tn, $imagen2, 0, 0, 0, 0, $tn_ancho, $tn_alto, $imagen_ancho, $imagen_alto);
		$ok = imagejpeg($image_tn, $ruta.'/tn_'.$archivo_destino, 100);
		$imagen_nueva['tn'] = '/tn_'.$archivo_destino;
	}	
/*	
	echo "<img src='tn_$archivo_destino' style='border:1px solid red;'>";
	echo "<img src='$archivo_destino' style='border:1px solid red;'>";
*/	
	return $imagen_nueva;
}		   
?>